home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Precision Software Appli…tions Silver Collection 1
/
Precision Software Applications Silver Collection Volume One (PSM) (1993).iso
/
tutor
/
s3bas11.arj
/
READMEM.BAS
< prev
next >
Wrap
BASIC Source File
|
1993-04-30
|
3KB
|
64 lines
'*****************************************************
' This is an example of using PEEK to read the user
' specified contents of memory. READMEM.BAS
'
' By: George Spafford Copyright 1993
' All Rights Reserved
'
' No external libraries are required
'
' v1.0 04/30/93
'
'*****************************************************
DEFINT A-Z
Title$ = "S3 Demo of Reading Memory v1.0 Copyright George Spafford 04/30/93"
CLS
PRINT Title$
PRINT
LOCATE 3, 40: PRINT "Specify a value preceded by &H if you"
LOCATE 4, 40: PRINT "want to use hex numbers. For example"
LOCATE 5, 40: PRINT "&H400 is 400H or 1024 integer."
LOCATE 3, 1
'One neat ability of BASIC is its ability to have a hexadecimal value
'specified during input and convert it on the fly. In this example, I
'am not performing any error trapping. Usually, I input to a string,
'check and see if it is NULL and then exit the program. It serves as
'a back door for users who want to exit the program. Here, I am just
'inputting directly do an integer. If the user enters a hex value in the
'form of &Hnnnn, the program will use it. However, if they get carried
'away, they can cause an overflow condition by exceding the bounds of
'an integer.
INPUT "Segment: ", Segment
INPUT "Offset : ", Offset
INPUT "Bytes : ", Length
PRINT : PRINT
DEF SEG = Segment 'set default segment to 0000
FOR n = Offset TO (Offset + (Length - 1)) STEP 1 'start at offset and look at
'at the bytes
T$ = HEX$(PEEK(n)) 'get the values at offset
IF LEN(T$) = 1 THEN T$ = "0" + T$ 'HEX$ doesn't add "0" if
'it is the first byte.
PRINT T$; " "; 'print it
CharLine = CharLine + 1 'track hex codes one screen
IF CharLine = 8 AND Length <> 8 THEN 'if 8 codes and user wanted
'more than eight, add hyphen
PRINT "- ";
END IF
IF CharLine = 16 THEN 'if 16 codes on screen, then
PRINT 'do a line feed
CharLine = 0
END IF
NEXT n 'do next n
DEF SEG 'return to BASIC segment
PRINT
END